<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8" />
		<title>p50_更新流程</title>
		<!-- 引入Vue -->
		<script type="text/javascript" src="../js/vue.js"></script>
	</head>
	<body>
		<!--准备好一个容器-->
		<div id="root" :x="n">
			<h1>你好，{{name}}</h1>
			<h1>当前值：{{n}}</h1>
			<button @click="add">点我n++</button>
			<button @click="bye">销毁</button>
		</div>
	</body>
	<script type="text/javascript">
		Vue.config.productionTip = false //阻止vue在启动时生成生产提示。
		const vm = new Vue({
			el: '#root',
			/* 可以不在div容器中写任何东西，然后使用template，像下面这样，也可以;
			但是使用templage，template会替换掉整个root容器，这样，比如root有 绑定x，也会同时替换掉。
			*/
			//template: `<div><h1>你好，{{name}}</h1><h1>当前值：{{n}}</h1><button @click="add">点我n++</button></div>`,
			data: {
				name: '尚硅谷',
				n: 1
			},
			methods: {
				add() {
					console.log('add');
					this.n++;
				},
				bye() {
					//完全销毁一个实例。清理它与其它实例的连接，解绑它的全部指令及自定义事件监听器；
					//原生的DOM事件不会撤回，仍然撤回；
					console.log('bye');
					vm.$destroy();
				}
			},
			beforeCreate() {
				console.log("beforeCreate");
			},
			created() {
				console.log(this);
				console.log("create");
			},
			beforeMount() {
				console.log('beforeMount');
			},
			mounted() {
				console.log('mounted');
			},
			beforeUpdate() {
				//此时:数据是新的，但页面是旧的，即:页面尚未和数据保持同步。
				console.log('beforeUpdate,n=%d', this.n);//打印出的n是2，但页面没有更新；
				//debugger
			},
			updated() {
				console.log('updated,n=%d', this.n);
			},
			beforeDestroy() {
				console.log('beforeDestroy,n=%d', this.n);
			},
			destroy() {
				console.log('destroy');
			}
		})
	</script>
</html>